# Introduction to AWS Identity and Access Management (IAM) ## 什么是IAM AWS 身份与访问管理(IAM)是亚马逊网络服务(AWS)提供的一项网络服务,能让您安全地管理对 AWS 服务和资源的访问。 它使您可以控制谁能够访问哪些 AWS 资源,以及他们可以对这些资源执行什么操作。 ### IAM关键概念 - 用户 IAM 用户代表与 AWS 服务交互的个人或应用程序。每个用户都有一组唯一的凭证(如访问密钥和密码)。 - 用户组 用户组是 IAM 用户的集合。通过给一个组分配权限,您可以更高效地管理多个用户的访问权限。 - 角色 角色用于委托对 AWS 资源的访问权限。它们不与特定的用户或组相关联 - 策略 策略是 IAM 访问控制的核心。策略是一个基于 JSON 的文档,用于定义权限。它详细说明了允许或拒绝用户、组或角色对特定 AWS 资源进行的操作。 ### IAM应用场景 - 多用户环境下的权限管理 - 跨账户访问管理 - 与第三方应用的集成 ### IAM的安全最佳实践 - 最小权限原则 只授予用户、组或角色完成其工作任务所需的最小权限 - 定期审查权限 企业的业务需求和员工职责可能会随着时间而变化,因此需要定期审查和更新用户、组和角色的权限 - 启用多因素认证(MFA) 对于重要的用户账户,建议启用多因素认证 ### 目的 此实验将演示: - 探索预先创建的 IAM 用户和组 - 检查应用于预先创建的组的 IAM 策略 - 按照实际场景,将用户添加到启用了特定功能的组 - 查找和使用 IAM 登录 URL - 试验策略对服务访问的影响 ### 步骤一 浏览用户和组 1.在 AWS Management Console 顶部的搜索栏中,搜索并选择IAM. 2.在左侧的导航窗格中,单击 Users。 3.单击 user-1。 这将带来 user-1 的摘要页面。将显示 Permissions 选项卡。 请注意,user-1 没有任何权限。 注意:您应该会看到 Unexpected 错误消息。这是正常的。 4.单击 Groups 选项卡。 User-1 也不是任何组的成员。 5.单击 Security credentials 选项卡。 user-1 被分配了控制台密码 6.在左侧导航窗格中,单击 User Groups。 已为您创建以下组: EC2-Administrator EC2-Support S3-Support 单击 EC2-Support 组。 这将带您进入 EC2-Support 组的摘要页面。 7.单击 Permissions 选项卡。 此组具有与之关联的托管策略,称为 AmazonEC2ReadOnlyAccess。 托管策略是可以附加到 IAM 用户和组的预构建策略 (由 AWS 或您的管理员构建)。 更新策略后,对策略的更改将立即应用于附加到策略的所有用户和组。 单击 Permissions (权限) 选项卡下的 AmazonEC2ReadOnlyAccess,此时将打开一个新的浏览器窗口。 现在单击 { } JSON。 8.IAM 策略中语句的基本结构为: Effect 表示是 Allow (允许) 还是 Deny (拒绝) 权限。 Action 指定可对 AWS 服务进行的 API 调用(例如 cloudwatch:ListMetrics)。 Resource 定义策略规则涵盖的实体的范围(例如,特定的 Amazon S3 存储桶或 Amazon EC2 实例,或 *,表示任何资源)。 9.在左侧导航窗格中,单击 User Groups。 单击 S3-Support 组。 S3-Support 组附加了 AmazonS3ReadOnlyAccess 策略。 10.单击 Permissions (权限) 选项卡下的 AmazonS3ReadOnlyAccess,此时将打开一个新的浏览器窗口。 现在单击 { } JSON。 此策略有权获取和列出 Amazon S3 中的资源。 11.在左侧导航窗格中,单击 User Groups。 单击 EC2-Admin 组。 单击 Permissions (权限) 选项卡下的 EC2-Admin-Policy。现在单击 JSON 选项卡。 此策略授予查看 (Describe) 有关 Amazon EC2 的信息的权限,以及启动和停止实例的能力。 12.在屏幕底部,单击 Cancel (取消) 以关闭策略。 ### 业务场景 业务场景 在本实验的其余部分,您将使用这些用户和组来启用支持以下业务场景的权限: 用户---在组中---- 权限 用户 1 - S3 支持-- 对 Amazon S3 的只读访问权限 用户 2 - EC2 支持-- 对 Amazon EC2 的只读访问权限 用户 3 - EC2-管理员-- 查看、启动和停止 Amazon EC2 实例 ### 步骤二 将用户添加到组 1.在左侧导航窗格中,单击 User Groups。 2.单击 S3-Support 组。 3.单击 Users 选项卡。 4.在 Users 选项卡中,单击 Add Users。 5.在 Add Users to Group (将用户添加到组) 窗口中,配置以下内容: 选择 user-1。 在屏幕底部,单击 Add Users。 在 Users 选项卡中,您将看到 user-1 已添加到组中。 6.将 user-2 添加到 EC2-Support Group 您已将 user-2 雇佣到一个角色中,他们将在该角色中为 Amazon EC2 提供支持。 使用与上述步骤类似的步骤,将 user-2 添加到 EC2-Support 组。 user-2 现在应该是 EC2-Support 组的一部分。 7.将 user-3 添加到 EC2-Admin 组 您已聘请用户 3 作为 Amazon EC2 管理员,负责管理您的 EC2 实例。 8.使用与上述步骤类似的步骤,将 user-3 添加到 EC2-Admin 组。 user-3 现在应该是 EC2-Admin 组的一部分。 9.在左侧导航窗格中,单击 User Groups。 每个 Group 的 Users 列中应有一个 1,表示每个 Group 中的用户数。 ### 步骤三 登录和测试用户 1.在左侧导航窗格中,单击 Dashboard。 显示 IAM 用户登录 URL,它看起来类似于:https://123456789012.signin.aws.amazon.com/console 此链接可用于登录您当前使用的 AWS 账户。 2.将 IAM 用户登录 URL 复制到文本编辑器。 3.打开一个无痕窗口。 4.单击 Tools 菜单选项 5.单击 InPrivate 浏览 6.将 IAM 用户登录链接粘贴到您的私有窗口中,然后按 Enter。 您现在将以用户 1 的身份登录,该用户已被聘为您的 Amazon S3 存储支持人员。 7.登录方式: IAM 用户名: 用户 1 密码:粘贴位于这些说明左侧的 AdministratorPassword 的值。 在 AWS Management Console 顶部的搜索栏中,搜索并选择第 3 页. 8.单击名称中包含 s3bucket 的存储桶。 您的 S3 存储桶的名称也位于这些说明的左侧。名为 awslabs-resources 的存储桶也可能与错误一起存在。 注意:这是正常的。您无权访问此存储桶。 由于您的用户是 IAM 中 S3-Support Group 的成员,因此他们有权查看 Amazon S3 存储桶列表和 s3bucket 的内容。 9.现在,测试他们是否有权访问 Amazon EC2。 在 AWS Management Console 顶部的搜索栏中,搜索并选择EC2. 10.通过以下方式导航到启动实验室的区域: 单击屏幕顶部 Support 左侧的下拉箭头 选择与这些说明左侧的 Region 值匹配的 region 值 在左侧导航窗格中,单击 Instances (实例)。 您看不到任何实例。这是因为尚未为您的用户分配任何使用 Amazon EC2 的权限。 您现在将以用户 2 的身份登录,该用户已被聘为您的 Amazon EC2 支持人员。 11.通过配置以下内容,将用户 1 从 AWS 管理控制台中注销: 在屏幕顶部,单击 user-1 单击 Sign Out 将 IAM 用户登录链接粘贴到您的私有窗口中,然后按 Enter。 此链接应位于文本编辑器中。 12.登录方式: IAM 用户名: 用户 2 密码:粘贴位于这些说明左侧的 AdministratorPassword 的值。 在 AWS Management Console 顶部的搜索栏中,搜索并选择EC2. 在屏幕右上角,通过切换按钮启用 New EC2 Experience(如果默认情况下未启用)。 13.通过以下方式导航到启动实验室的区域: 单击屏幕顶部 Support 左侧的下拉箭头 选择与这些说明左侧的 Region 值匹配的 region 值 在左侧导航窗格中,单击 Instances (实例)。 您现在可以看到 Amazon EC2 实例,因为您具有 Read Only 权限。但是,您将无法对 Amazon EC2 资源进行任何更改。 14.应选择您的 EC2 实例如果未选择,请选择它。 在 Instance state(实例状态)中,菜单单击 Stop instance(停止实例)。 在 Stop instance (停止实例) 窗口中,单击 Stop (停止)。 您将收到一条错误消息,指出您无权执行此操作。这表明该策略只允许您获取信息,而不进行更改。 关闭显示的错误消息。 15.接下来,检查用户 2 是否可以访问 Amazon S3。 在 AWS Management Console 顶部的搜索栏中,搜索并选择第 3 页. 您将收到错误 Access Denied because user-2 didn't permission to use Amazon S3. 您现在将以用户 3 的身份登录,该用户已被聘为您的 Amazon EC2 管理员。 16.通过配置以下内容,将用户 2 从 AWS 管理控制台中注销: 在屏幕顶部,单击 user-2 单击 Sign Out 将 IAM 用户登录链接粘贴到您的私有窗口中,然后按 Enter。 17.再次将登录链接粘贴到 Web 浏览器地址栏中。如果它不在剪贴板中,请从之前存储它的文本编辑器中检索它。 登录方式: IAM 用户名: 用户 3 密码:粘贴位于这些说明左侧的 AdministratorPassword 的值。 在 AWS Management Console 顶部的搜索栏中,搜索并选择EC2. 18.通过以下方式导航到启动实验室的区域: 单击屏幕顶部 Support 左侧的下拉箭头 选择与这些说明左侧的 Region 值匹配的 region 值 19.在左侧导航窗格中,单击 Instances (实例)。 作为 EC2 管理员,您现在应该有权停止 Amazon EC2 实例。 应选择您的 EC2 实例。如果不是,请选择它。 20.在 Instance state(实例状态)中,菜单单击 Stop instance(停止实例)。 21.在 Stop Instance (停止实例) 窗口中,单击 Stop (停止)。 22.实例将进入 stopping 状态并关闭。 关闭您的隐私窗口。 ### 结论 - 探索预先创建的 IAM 用户和组 - 已检查应用于预先创建的组的 IAM 策略 - 遵循真实场景,将用户添加到启用了特定功能的组 - 找到并使用了 IAM 登录 URL - 试验了策略对服务访问的影响